-
Notifications
You must be signed in to change notification settings - Fork 3.2k
fix(google): wrap primitive tool responses for Gemini API compatibility #2900
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Greptile SummaryFixed Gemini API error when tools return primitive values by wrapping them in objects. The Gemini API requires
This ensures compatibility with Gemini's strict type requirements while preserving the ability for tools to return any JSON-serializable value. Confidence Score: 5/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant Tool as Tool Execution
participant Core as Gemini Core
participant Utils as ensureStructResponse
participant API as Gemini API
Tool->>Core: executeTool returns primitive (boolean/string/number/null)
Core->>Utils: ensureStructResponse(result.output)
alt Input is object (not array)
Utils-->>Core: Return as-is
else Input is primitive or array
Utils-->>Core: Wrap in { value: ... }
end
Core->>API: functionResponse.response with wrapped value
API-->>Core: Success (Struct format validated)
Note over Utils,API: History path (convertToGeminiFormat)
Tool->>Utils: Tool message with primitive content
Utils->>Utils: JSON.parse(content)
Utils->>Utils: ensureStructResponse(parsed)
alt Parsed is object
Utils-->>API: Return as-is
else Parsed is primitive/array
Utils-->>API: Wrap in { value: ... }
end
|
* fix(google): wrap primitive tool responses for Gemini API compatibility (#2900) * fix(canonical): copilot path + update parent (#2901) * fix(rss): add top-level title, link, pubDate fields to RSS trigger output (#2902) * fix(rss): add top-level title, link, pubDate fields to RSS trigger output * fix(imap): add top-level fields to IMAP trigger output * improvement(browseruse): add profile id param (#2903) * improvement(browseruse): add profile id param * make request a stub since we have directExec * improvement(executor): upgraded abort controller to handle aborts for loops and parallels (#2880) * improvement(executor): upgraded abort controller to handle aborts for loops and parallels * comments * improvement(files): update execution for passing base64 strings (#2906) * progress * improvement(execution): update execution for passing base64 strings * fix types * cleanup comments * path security vuln * reject promise correctly * fix redirect case * remove proxy routes * fix tests * use ipaddr * feat(tools): added textract, added v2 for mistral, updated tag dropdown (#2904) * feat(tools): added textract * cleanup * ack pr comments * reorder * removed upload for textract async version * fix additional fields dropdown in editor, update parser to leave validation to be done on the server * added mistral v2, files v2, and finalized textract * updated the rest of the old file patterns, updated mistral outputs for v2 * updated tag dropdown to parse non-operation fields as well * updated extension finder * cleanup * added description for inputs to workflow * use helper for internal route check * fix tag dropdown merge conflict change * remove duplicate code --------- Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai> * fix(ui): change add inputs button to match output selector (#2907) * fix(canvas): removed invite to workspace from canvas popover (#2908) * fix(canvas): removed invite to workspace * removed unused props * fix(copilot): legacy tool display names (#2911) * fix(a2a): canonical merge (#2912) * fix canonical merge * fix empty array case * fix(change-detection): copilot diffs have extra field (#2913) * improvement(logs): improved logs ui bugs, added subflow disable UI (#2910) * improvement(logs): improved logs ui bugs, added subflow disable UI * added duplicate to action bar for subflows * feat(broadcast): email v0.5 (#2905) --------- Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com> Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai> Co-authored-by: Emir Karabeg <78010029+emir-karabeg@users.noreply.github.com>
Summary
ensureStructResponseutility to wrap primitives in{ value: ... }forfunctionResponse.responseType of Change
Testing
Checklist